gtk4.git
8 years agotext handle: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 16:22:35 +0000 (12:22 -0400)]
text handle: Use GdkEvent API

8 years agoselection: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:58:39 +0000 (10:58 -0400)]
selection: Use GdkEvent API

8 years agosearch bar: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:58:23 +0000 (10:58 -0400)]
search bar: Use GdkEvent API

8 years agoscrolled window: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:58:08 +0000 (10:58 -0400)]
scrolled window: Use GdkEvent API

8 years agoplaces view: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:57:52 +0000 (10:57 -0400)]
places view: Use GdkEvent API

8 years agoplace sidebar: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:57:37 +0000 (10:57 -0400)]
place sidebar: Use GdkEvent API

8 years agopath bar: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:57:15 +0000 (10:57 -0400)]
path bar: Use GdkEvent API

8 years agopad controller: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:56:25 +0000 (10:56 -0400)]
pad controller: Use GdkEvent API

8 years agomenu shell: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:56:08 +0000 (10:56 -0400)]
menu shell: Use GdkEvent API

8 years agomenu item: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:55:52 +0000 (10:55 -0400)]
menu item: Use GdkEvent API

8 years agoim context simple: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:55:35 +0000 (10:55 -0400)]
im context simple: Use GdkEvent API

8 years agoheader bar: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:55:16 +0000 (10:55 -0400)]
header bar: Use GdkEvent API

8 years agogesture zoom: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:53:33 +0000 (10:53 -0400)]
gesture zoom: Use GdkEvent API

8 years agogesture swipe: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:53:01 +0000 (10:53 -0400)]
gesture swipe: Use GdkEvent API

8 years agogesture single: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:52:45 +0000 (10:52 -0400)]
gesture single: Use GdkEvent API

8 years agogesture rotate: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:52:25 +0000 (10:52 -0400)]
gesture rotate: Use GdkEvent API

8 years agogesture drag: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:52:06 +0000 (10:52 -0400)]
gesture drag: Use GdkEvent API

8 years agogesture: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:51:49 +0000 (10:51 -0400)]
gesture: Use GdkEvent API

8 years agowindow accessible: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:50:50 +0000 (10:50 -0400)]
window accessible: Use GdkEvent API

8 years agowidget accessible: Use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 14:50:34 +0000 (10:50 -0400)]
widget accessible: Use GdkEvent API

8 years agoAdd more GdkEvents API
Matthias Clasen [Sat, 26 Aug 2017 14:50:15 +0000 (10:50 -0400)]
Add more GdkEvents API

8 years agoxim: Convert to GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 02:55:38 +0000 (22:55 -0400)]
xim: Convert to GdkEvent API

8 years agosettings: Convert to GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 02:54:25 +0000 (22:54 -0400)]
settings: Convert to GdkEvent API

8 years agogesture rotate: Partially convert to GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 02:53:58 +0000 (22:53 -0400)]
gesture rotate: Partially convert to GdkEvent API

8 years agogesture: Partially convert to GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 02:53:42 +0000 (22:53 -0400)]
gesture: Partially convert to GdkEvent API

8 years agoflowbox: Convert to GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 02:53:19 +0000 (22:53 -0400)]
flowbox: Convert to GdkEvent API

8 years agofile chooser widget: Covert to GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 02:53:04 +0000 (22:53 -0400)]
file chooser widget: Covert to GdkEvent API

8 years agoexpander: Convert to GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 02:52:48 +0000 (22:52 -0400)]
expander: Convert to GdkEvent API

8 years agoentry: Convert to GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 02:52:27 +0000 (22:52 -0400)]
entry: Convert to GdkEvent API

8 years agodnd: Convert to GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 02:52:09 +0000 (22:52 -0400)]
dnd: Convert to GdkEvent API

8 years agocell renderer accel: Convert to GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 02:51:37 +0000 (22:51 -0400)]
cell renderer accel: Convert to GdkEvent API

8 years agobindings: Convert to use GdkEvent API
Matthias Clasen [Sat, 26 Aug 2017 02:51:18 +0000 (22:51 -0400)]
bindings: Convert to use GdkEvent API

8 years agoAdd more getters for event fields
Matthias Clasen [Sat, 26 Aug 2017 02:50:52 +0000 (22:50 -0400)]
Add more getters for event fields

8 years agogdk: Make GdkEvent structs/union opaque
Carlos Garnacho [Sat, 5 Aug 2017 13:34:39 +0000 (15:34 +0200)]
gdk: Make GdkEvent structs/union opaque

All users are forced to deal with events as opaque pointers, only
using API to access the info.

8 years agobindings: Partially update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:58:33 +0000 (16:58 +0200)]
bindings: Partially update to using GdkEvent API

8 years agoa11y: Partially update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:58:20 +0000 (16:58 +0200)]
a11y: Partially update to using GdkEvent API

8 years agoinspector: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:57:26 +0000 (16:57 +0200)]
inspector: Update to using GdkEvent API

8 years agogtkwindow: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:56:53 +0000 (16:56 +0200)]
gtkwindow: Update to using GdkEvent API

8 years agotreeview: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:56:15 +0000 (16:56 +0200)]
treeview: Update to using GdkEvent API

8 years agotooltip: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:56:05 +0000 (16:56 +0200)]
tooltip: Update to using GdkEvent API

8 years agotextview: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:55:47 +0000 (16:55 +0200)]
textview: Update to using GdkEvent API

8 years agotexthandle: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:55:39 +0000 (16:55 +0200)]
texthandle: Update to using GdkEvent API

8 years agospinbutton: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:55:22 +0000 (16:55 +0200)]
spinbutton: Update to using GdkEvent API

8 years agoscrolledwindow: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:54:34 +0000 (16:54 +0200)]
scrolledwindow: Update to using GdkEvent API

8 years agoscalebutton: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:54:21 +0000 (16:54 +0200)]
scalebutton: Update to using GdkEvent API

8 years agorecentchoooser: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:54:11 +0000 (16:54 +0200)]
recentchoooser: Update to using GdkEvent API

8 years agorange: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:52:41 +0000 (16:52 +0200)]
range: Update to using GdkEvent API

8 years agopopover: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:52:16 +0000 (16:52 +0200)]
popover: Update to using GdkEvent API

8 years agoplacesview: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:52:03 +0000 (16:52 +0200)]
placesview: Update to using GdkEvent API

8 years agoplacessidebar: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:51:49 +0000 (16:51 +0200)]
placessidebar: Update to using GdkEvent API

8 years agopaned: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:51:12 +0000 (16:51 +0200)]
paned: Update to using GdkEvent API

8 years agonotebook: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:50:30 +0000 (16:50 +0200)]
notebook: Update to using GdkEvent API

8 years agomountoperation: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:50:14 +0000 (16:50 +0200)]
mountoperation: Update to using GdkEvent API

8 years agomenu: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:49:38 +0000 (16:49 +0200)]
menu: Update to using GdkEvent API

To some extent, plenty of root coordinate calculations left...

8 years agolistbox: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:49:12 +0000 (16:49 +0200)]
listbox: Update to using GdkEvent API

8 years agoimcontext: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:48:47 +0000 (16:48 +0200)]
imcontext: Update to using GdkEvent API

8 years agoiconview: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:48:09 +0000 (16:48 +0200)]
iconview: Update to using GdkEvent API

8 years agogesture: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:47:11 +0000 (16:47 +0200)]
gesture: Update to using GdkEvent API

To some extent, pad and touchpad gesture events need extra API.

8 years agofontchooser: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:46:28 +0000 (16:46 +0200)]
fontchooser: Update to using GdkEvent API

8 years agoflowbox: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:46:15 +0000 (16:46 +0200)]
flowbox: Update to using GdkEvent API

8 years agofilechooser: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:46:01 +0000 (16:46 +0200)]
filechooser: Update to using GdkEvent API

8 years agoentrycompletion: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:45:20 +0000 (16:45 +0200)]
entrycompletion: Update to using GdkEvent API

8 years agoentry: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:45:12 +0000 (16:45 +0200)]
entry: Update to using GdkEvent API

8 years agocombobox: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:44:59 +0000 (16:44 +0200)]
combobox: Update to using GdkEvent API

8 years agocolorswatch: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:44:48 +0000 (16:44 +0200)]
colorswatch: Update to using GdkEvent API

8 years agocolorplane: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:44:38 +0000 (16:44 +0200)]
colorplane: Update to using GdkEvent API

8 years agocoloreditor: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:44:29 +0000 (16:44 +0200)]
coloreditor: Update to using GdkEvent API

8 years agocellrendererspin: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:44:04 +0000 (16:44 +0200)]
cellrendererspin: Update to using GdkEvent API

8 years agocellarea: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:43:52 +0000 (16:43 +0200)]
cellarea: Update to using GdkEvent API

8 years agocalendar: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:43:42 +0000 (16:43 +0200)]
calendar: Update to using GdkEvent API

8 years agobutton: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:43:09 +0000 (16:43 +0200)]
button: Update to using GdkEvent API

8 years agoappchooserwidget: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:42:39 +0000 (16:42 +0200)]
appchooserwidget: Update to using GdkEvent API

8 years agoaboutdialog: Update to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:42:09 +0000 (16:42 +0200)]
aboutdialog: Update to using GdkEvent API

8 years agomodules: Update input context impls to using GdkEvent API
Carlos Garnacho [Fri, 25 Aug 2017 14:40:59 +0000 (16:40 +0200)]
modules: Update input context impls to using GdkEvent API

8 years agogdk/wayland: Don't make gtk_shell1 v2 mandatory
Carlos Garnacho [Tue, 19 Sep 2017 16:30:01 +0000 (18:30 +0200)]
gdk/wayland: Don't make gtk_shell1 v2 mandatory

It may result in a protocol error on older mutters, as GTK+ will
invariably request a higher version than what's available. Make
GTK+ also accept v1 if it's all the compositor has got.

8 years agocss: Drop the new indent api again
Matthias Clasen [Tue, 19 Sep 2017 03:18:08 +0000 (23:18 -0400)]
css: Drop the new indent api again

It is not used anymore, and it was not a good idea.

8 years agocss: Use enums instead of idents for font-variant properties
Matthias Clasen [Mon, 18 Sep 2017 22:38:16 +0000 (18:38 -0400)]
css: Use enums instead of idents for font-variant properties

As Benjamin says, ident should only be used if any value
is valid, which is not the case here. So use enums instead,
which should also be more efficient. To handle the more
complicated cases like font-variant-ligatures, we have to
introduce flags-like values.

8 years agowayland: Bump GTK_SHELL1 version to 2
Georges Basile Stavracas Neto [Tue, 19 Sep 2017 02:49:44 +0000 (23:49 -0300)]
wayland: Bump GTK_SHELL1 version to 2

Otherwise, we can't negotiate the latest version with the
compositor, making the compositor use v1 of the protocol and
pretty much ignoring all the edge constraints work.

8 years agoUpdate Polish translation
Piotr Drąg [Tue, 19 Sep 2017 00:11:26 +0000 (02:11 +0200)]
Update Polish translation

8 years agoWindow: Clarify documentation of set_application()
Daniel Boles [Mon, 18 Sep 2017 23:05:09 +0000 (00:05 +0100)]
Window: Clarify documentation of set_application()

Clarify that ::destroy, not ::hide*, removes a window from its app, by
replacing the mention of open windows with the blurb on destruction from
:application, completing commit 7db4bee4b62bc9b6f20ba4e599e8d030314984fd

Also link to the equivalent gtk_application_(add|remove)_window() calls,
since Application.add_window() already links back to Window:application.

* unless you use gtkmm…

https://bugzilla.gnome.org/show_bug.cgi?id=639931

8 years agoPlacesSidebar: Avoid unused mem if !CLOUDPROVIDERS
Daniel Boles [Mon, 18 Sep 2017 23:14:41 +0000 (00:14 +0100)]
PlacesSidebar: Avoid unused mem if !CLOUDPROVIDERS

The member GList *cloud_rows is only ever used if HAVE_CLOUDPROVIDERS is
defined, so don’t declare it if not.

8 years agoPlacesSidebar: Unref cloud_manager in dispose()
Daniel Boles [Tue, 12 Sep 2017 21:15:27 +0000 (22:15 +0100)]
PlacesSidebar: Unref cloud_manager in dispose()

We ref the CloudProviders singleton in init() but did not unref it in
dispose(). Do so, using g_clear_object().

https://bugzilla.gnome.org/show_bug.cgi?id=787600

8 years agoSidebarRow: Unref CloudProvider on change/finalize
Daniel Boles [Tue, 12 Sep 2017 20:56:46 +0000 (21:56 +0100)]
SidebarRow: Unref CloudProvider on change/finalize

It was never unref()d, either when replacing the existing GObject in
set_property(), cleaning up in finalize(), or becoming a placeholder.

Fix by using g_set_object() and g_clear_object() to unref as needed.

This also drops the check that the newly set object is a valid cloud
provider account, as we don’t do the equivalent for any of the other
object-typed properties, and Carlos didn’t think this was important.

https://bugzilla.gnome.org/show_bug.cgi?id=787600

8 years agoFix a typo
Matthias Clasen [Mon, 18 Sep 2017 22:10:08 +0000 (18:10 -0400)]
Fix a typo

The property is called font-variant-alternates, not -alternatives.
Correct this everywhere.

8 years agocss: implement font-variant as a shorthand
Matthias Clasen [Mon, 18 Sep 2017 15:28:05 +0000 (11:28 -0400)]
css: implement font-variant as a shorthand

Drop the current css2-style font-variant property and
replace it with a shorthand as specified in the css3 fonts
module. Currently, we fully support the font-variant-ligatures,
font-variant-position, font-variant-caps, font-variant-numeric
and font-variant-east-asian subproperties. font-variant-alternatives
is only partially supported.

8 years agocss: Implement font-variant-east-asian
Matthias Clasen [Mon, 18 Sep 2017 16:42:42 +0000 (12:42 -0400)]
css: Implement font-variant-east-asian

This is translated to the corresponding OpenType features.

8 years agocss: Implement font-variant-alternatives
Matthias Clasen [Mon, 18 Sep 2017 14:01:05 +0000 (10:01 -0400)]
css: Implement font-variant-alternatives

This is only a partial implementation, since we don't support
@font-feature-values. The only supported value is historical-forms,
for now.

8 years agocss: Implement font-variant-numeric
Matthias Clasen [Mon, 18 Sep 2017 11:34:46 +0000 (07:34 -0400)]
css: Implement font-variant-numeric

This gets translated to the corresponding OpenType features.

8 years agocss: Implement font-variant-caps
Matthias Clasen [Mon, 18 Sep 2017 04:12:12 +0000 (00:12 -0400)]
css: Implement font-variant-caps

This gets translated to the corresponding OpenType features.

8 years agocss: Implement font-variant-position
Matthias Clasen [Mon, 18 Sep 2017 04:01:39 +0000 (00:01 -0400)]
css: Implement font-variant-position

This gets translated to the corresponding OpenType features.

8 years agocss: Implement font-variant-ligatures
Matthias Clasen [Mon, 18 Sep 2017 03:52:04 +0000 (23:52 -0400)]
css: Implement font-variant-ligatures

This gets translated into corresponding OpenType features.

8 years agocss: Implement font-kerning
Matthias Clasen [Mon, 18 Sep 2017 01:27:59 +0000 (21:27 -0400)]
css: Implement font-kerning

This gets translated to the OpenType feature kern.

8 years agoAdd an auxiliary ident parsing function
Matthias Clasen [Mon, 18 Sep 2017 14:55:36 +0000 (10:55 -0400)]
Add an auxiliary ident parsing function

This lets us conveniently create ident values from
multiple candidates.

8 years agobuild: Bump minimum Meson version to 0.42.1
Debarshi Ray [Mon, 18 Sep 2017 16:04:34 +0000 (18:04 +0200)]
build: Bump minimum Meson version to 0.42.1

Otherwise it fails to build with:

  FAILED: gtk/im-ipa@sha/imipa.c.o
  ...
  In file included from ../gtk/gtkintl.h:4:0,
                   from ../modules/input/imipa.c:28:
  /opt/include/glib-2.0/glib/gi18n-lib.h:27:2: error: #error You must
          define GETTEXT_PACKAGE before including gi18n-lib.h. Did you
          forget to include config.h?
   #error You must define GETTEXT_PACKAGE before
           including gi18n-lib.h.  Did you forget to include config.h?
    ^~~~~
  ../modules/input/imipa.c:144:3: error: ‘GETTEXT_PACKAGE’ undeclared
          here (not in a function)
     GETTEXT_PACKAGE,     /* Translation domain */
     ^~~~~~~~~~~~~~~
  ../modules/input/imipa.c:145:4: error: ‘GTK_LOCALEDIR’ undeclared
          here (not in a function)
      GTK_LOCALEDIR,     /* Dir for bindtextdomain (not strictly
              needed for "gtk+") */
      ^~~~~~~~~~~~~

8 years agoUpdate Swedish translation
Anders Jonsson [Mon, 18 Sep 2017 11:22:25 +0000 (11:22 +0000)]
Update Swedish translation

8 years agoUpdate Swedish translation
Anders Jonsson [Mon, 18 Sep 2017 11:20:48 +0000 (11:20 +0000)]
Update Swedish translation

8 years agowindow: Improve detection of edge constraint support
Georges Basile Stavracas Neto [Mon, 18 Sep 2017 02:09:10 +0000 (23:09 -0300)]
window: Improve detection of edge constraint support

Instead of relying on special values of edge constraints, this
patch adds an internal-only gdk_window_supports_edge_constraints()
function that by default returns FALSE, and is implemented by
GdkWindowWayland and GdkWindowX11.

This way, we can properly detect server-side support for this
feature and adapt accordingly.

https://bugzilla.gnome.org/show_bug.cgi?id=783669

8 years agowindow: Add individual CSS classes based on edge constraints
Georges Basile Stavracas Neto [Fri, 18 Aug 2017 23:12:23 +0000 (20:12 -0300)]
window: Add individual CSS classes based on edge constraints

The last touch on this patch series is making GtkWindow able to
selectively adjust various UI details based on the different
tiled edges. The main driver here is that we don't want to show
shadows on edges that are constrained.

This patch adds the necessary code to do that, while still
maintaining compatibility with the old ways.

https://bugzilla.gnome.org/show_bug.cgi?id=783669

8 years agox11: Add support for _GTK_EDGE_CONSTRAINTS atom
Georges Basile Stavracas Neto [Fri, 18 Aug 2017 23:09:15 +0000 (20:09 -0300)]
x11: Add support for _GTK_EDGE_CONSTRAINTS atom

Following the previous patch, where edge constraints support
was added to the Wayland backend, this patch introduces the
necessary code to handle the _GTK_EDGE_CONSTRAINTS atom from
X11 backend.

https://bugzilla.gnome.org/show_bug.cgi?id=783669

8 years agowayland: consider edge constraints in surface configuration
Georges Basile Stavracas Neto [Thu, 17 Aug 2017 03:35:52 +0000 (00:35 -0300)]
wayland: consider edge constraints in surface configuration

Now that GTK windows have the ability to properly handle
per-edge tiling constraints, this patch extends GTK's
internal Wayland protocol to have a proper enum with the
relevant edge data.

Once this approach is validated, we can think of upstreaming
this work as an official Wayland protocol extension.

https://bugzilla.gnome.org/show_bug.cgi?id=783669